package com.lsfb.testgamedemo.Utils;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;

import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Administrator on 2017/1/18 0018.
 */

public class LittleUtils {
    /*
*
* 弹出对话框通知用户更新程序
*
* 弹出对话框的步骤：
*  1.创建alertDialog的builder.
*  2.要给builder设置属性, 对话框的内容,样式,按钮
*  3.通过builder 创建一个对话框
*  4.对话框show()出来
*/
    public static void showUpdataDialog(final Context context, final String url, final int close) {
        AlertDialog.Builder builer = new AlertDialog.Builder(context);
        builer.setTitle("发现新版本！是否升级");

//	builer.setMessage(info.getDescription());
        //当点确定按钮时从服务器上下载 新的apk 然后安装   װ
        builer.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Log.i("FFF", "下载apk,更新");
                downLoadApk(context, url);
            }
        });
        builer.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                if (close == 1) {
                    android.os.Process.killProcess(android.os.Process.myPid());
                }
                dialog.dismiss();
            }
        });
        AlertDialog dialog = builer.create();
        dialog.setCancelable(false);
        dialog.show();
    }

    /*
     * 从服务器中下载APK
     */
    protected static void downLoadApk(final Context context, final String url) {
        final ProgressDialog pd;    //进度条对话框
        pd = new ProgressDialog(context);
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd.setMessage("正在下载更新");
        pd.setCancelable(false);
        pd.show();
        new Thread() {
            @Override
            public void run() {
                try {
                    File file = DownLoadManager.getFileFromServer(url, pd);
                    sleep(3000);
                    installApk(context, file);
                    pd.dismiss(); //结束掉进度条对话框
                } catch (Exception e) {
//                Message msg = new Message();
//                msg.what = DOWN_ERROR;
//                handler.sendMessage(msg);
//
                    e.printStackTrace();
                }
            }
        }.start();
    }

    //安装apk
    public static void installApk(Context context, File file) {
        Intent intent = new Intent();
        //执行动作
        intent.setAction(Intent.ACTION_VIEW);
        //执行的数据类型
        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
        context.startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());
    }

    /**
     * 排查是否是一个数字
     *
     * @param old
     * @return
     */
    public static String GetNumString(String old) {
        String newstr = "";
        String regEx = "[^0-9]";
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(old);
        newstr = matcher.replaceAll("").trim();
        return newstr;
    }

    /**
     * 分离消息1(通过/:/方式的来排查)
     */
    public static String SplitMsg(String msg) {
        String tmpmsg = msg.replaceAll(" ", ""); //去掉多余的空格
//        String tmpmsg=msg;
        if (tmpmsg.length() > 0) //判断去掉空格后是否为空字符串
        {
            int msgsplitnum = tmpmsg.indexOf(":"); //查找到：第一次出现的地方
            if (msgsplitnum != -1) {
                String tmporder = tmpmsg.substring(msgsplitnum + 1, tmpmsg.length());
                if (tmporder.length() != 0) {
                    //返回提取的消息
                    return tmporder;
                } else {
                    return null; //如果消息为空，就直接返回一个null

                }
            } else {
                return null;  //如果消息为空，就直接返回一个null
            }
        } else {
            return null;    //如果消息为空，就直接返回一个null
        }
    }

    /**
     * 分离消息2(通过/: /来排查)
     */
    public static String SplitMsg2(String msg) {
//        String tmpmsg = msg.replaceAll(" ", ""); //去掉多余的空格
        String tmpmsg = msg;
        if (tmpmsg.length() > 0) //判断去掉空格后是否为空字符串
        {
            int msgsplitnum = tmpmsg.indexOf(": "); //查找到：第一次出现的地方
            if (msgsplitnum != -1) {
                String tmporder = tmpmsg.substring(msgsplitnum + 1, tmpmsg.length()).replaceAll(" ", "");
                if (tmporder.length() != 0) {
                    //返回提取的消息
                    return tmporder;
                } else {
                    return null; //如果消息为空，就直接返回一个null
                }
            } else {
                return null;  //如果消息为空，就直接返回一个null
            }
        } else {
            return null;    //如果消息为空，就直接返回一个null
        }
    }

    /**
     * @param orderArr (传入我们的命令列表)
     * @param msg      (传入消息字符串)
     * @return 返回的是一个null或者一个字符串数组(code[代表命令的编号], orderdata[代表命令后面的数据])
     */
    public static String[] partMsg2Order(String[] orderArr, String msg) {
        int code = -1;
        msg = SplitMsg(msg);
        for (int j = 0; j < orderArr.length - 1; j++) {
            if (msg.indexOf(orderArr[j]) != -1) {
                code = j;
            }
        }
        if (code == -1) {
            return null; //如果是个未知命令，就不管他，返回一个null
        } else {
            String orderdata = msg.substring(msg.indexOf(orderArr[code]) + orderArr[code].length());
            String[] tmp = {String.valueOf(code), orderdata};
            return tmp;
        }
    }

    /**
     * 验证密码
     *
     * @return
     */
    public static boolean VeryPwd(String msg, String pwd) {


        if (msg.length() > 3) {
            if (msg.substring(0, 3).equals(pwd)) {
                return true;
            }
        }
        return false;
    }
}
